package com.xyz.practice.jdbc.databasemetadata;

import java.io.Serializable;

public class Column implements Serializable {
    private static final long serialVersionUID = 4257926755376078999L;

    Column() {

    }

    /**
     * table catalog (may be null)
     */
    private String tableCat;
    /**
     * table schema (may be null)
     */
    private String tableSchem;
    /**
     * table name
     */
    private String tableName;
    /**
     * column name
     */
    private String columnName;
    /**
     * SQL type from java.sql.Types
     */
    private int    dataType;
    /**
     * Data source dependent type name, for a UDT the type name is fully qualified
     */
    private String typeName;
    /**
     * column size
     */
    private int    columnSize;
    /**
     * the number of fractional digits. Null is returned for data types where DECIMAL_DIGITS is not
     * applicable.
     */
    private int    decimalDigits;
    /**
     * Radix (typically either 10 or 2)
     */
    private int    numPrecRadix;
    /**
     * is NULL allowed columnNoNulls - might not allow NULL values columnNullable - definitely
     * allows NULL values columnNullableUnknown - nullability unknown
     */
    private int    nullable;
    /**
     * comment describing column (may be null)
     */
    private String remarks;
    /**
     * efault value for the column, which should be interpreted as a string when the value is
     * enclosed in single quotes (may be null)
     */
    private String columnDef;
    /**
     * for char types the maximum number of bytes in the column
     */
    private int    charOctetLength;
    /**
     * index of column in table (starting at 1)
     */
    private int    originalPosition;
    /**
     * ISO rules are used to determine the nullability for a column. YES --- if the parameter can
     * include NULLs NO --- if the parameter cannot include NULLs empty string --- if the
     * nullability for the parameter is unknown
     */
    private String isNullable;
    /**
     * catalog of table that is the scope of a reference attribute (null if DATA_TYPE isn't REF)
     */
    private String scopeCatlog;
    /**
     * schema of table that is the scope of a reference attribute (null if the DATA_TYPE isn't REF)
     */
    private String scopeSchema;
    /**
     * table name that this the scope of a reference attribure (null if the DATA_TYPE isn't REF)
     */
    private String scopeTable;
    /**
     * source type of a distinct type or user-generated Ref type, SQL type from java.sql.Types (null
     * if DATA_TYPE isn't DISTINCT or user-generated REF)
     */
    private short  sourceDataType;
    /**
     * Indicates whether this column is auto incremented YES --- if the column is auto incremented
     * NO --- if the column is not auto incremented empty string --- if it cannot be determined
     * whether the column is auto incremented parameter is unknown
     */
    private String isAutoincrement;

    String getTableCat() {
        return tableCat;
    }

    void setTableCat( String tableCat ) {
        this.tableCat = tableCat;
    }

    String getTableSchem() {
        return tableSchem;
    }

    void setTableSchem( String tableSchem ) {
        this.tableSchem = tableSchem;
    }

    String getTableName() {
        return tableName;
    }

    void setTableName( String tableName ) {
        this.tableName = tableName;
    }

    String getColumnName() {
        return columnName;
    }

    void setColumnName( String columnName ) {
        this.columnName = columnName;
    }

    int getDataType() {
        return dataType;
    }

    void setDataType( int dataType ) {
        this.dataType = dataType;
    }

    String getTypeName() {
        return typeName;
    }

    void setTypeName( String typeName ) {
        this.typeName = typeName;
    }

    int getColumnSize() {
        return columnSize;
    }

    void setColumnSize( int columnSize ) {
        this.columnSize = columnSize;
    }

    int getDecimalDigits() {
        return decimalDigits;
    }

    void setDecimalDigits( int decimalDigits ) {
        this.decimalDigits = decimalDigits;
    }

    int getNumPrecRadix() {
        return numPrecRadix;
    }

    void setNumPrecRadix( int numPrecRadix ) {
        this.numPrecRadix = numPrecRadix;
    }

    int getNullable() {
        return nullable;
    }

    void setNullable( int nullable ) {
        this.nullable = nullable;
    }

    String getRemarks() {
        return remarks;
    }

    void setRemarks( String remarks ) {
        this.remarks = remarks;
    }

    String getColumnDef() {
        return columnDef;
    }

    void setColumnDef( String columnDef ) {
        this.columnDef = columnDef;
    }

    int getCharOctetLength() {
        return charOctetLength;
    }

    void setCharOctetLength( int charOctetLength ) {
        this.charOctetLength = charOctetLength;
    }

    int getOriginalPosition() {
        return originalPosition;
    }

    void setOriginalPosition( int originalPosition ) {
        this.originalPosition = originalPosition;
    }

    String getIsNullable() {
        return isNullable;
    }

    void setIsNullable( String isNullable ) {
        this.isNullable = isNullable;
    }

    String getScopeCatlog() {
        return scopeCatlog;
    }

    void setScopeCatlog( String scopeCatlog ) {
        this.scopeCatlog = scopeCatlog;
    }

    String getScopeSchema() {
        return scopeSchema;
    }

    void setScopeSchema( String scopeSchema ) {
        this.scopeSchema = scopeSchema;
    }

    String getScopeTable() {
        return scopeTable;
    }

    void setScopeTable( String scopeTable ) {
        this.scopeTable = scopeTable;
    }

    short getSourceDataType() {
        return sourceDataType;
    }

    void setSourceDataType( short sourceDataType ) {
        this.sourceDataType = sourceDataType;
    }

    String getIsAutoincrement() {
        return isAutoincrement;
    }

    void setIsAutoincrement( String isAutoincrement ) {
        this.isAutoincrement = isAutoincrement;
    }

}
